home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Snippets / MacLZSS 1.0.3 / About MacLZSS next >
Text File  |  1996-07-07  |  4KB  |  90 lines

  1. Ported to Metrowerks CodeWarrior by Paul Celestin 3 November 1994
  2. Updated for CW7 on 951215
  3. Updated for CW9 on 960704
  4.  
  5. the original read me file:
  6.  
  7.  
  8. This archive should contain a subfolder with 3 'C' programs and one text file; this file; lzss.c; and unix_main.c.
  9.  
  10. Intro
  11. -----
  12. Several months ago, about the only file compression techniques used were simple variations of Huffman "squeezing" and Lempel-Ziv-Welch "crunching," popularized by the MS-DOS 'arc' utility.
  13.  
  14. Recently new techniques have been devised, implemented in programs such as PKZIP, PAK, and LHARC.  The latest to arrive, LHARC, routinely compressed better any other program, and interested parties soon made available 'C' source code to three programs:
  15.  
  16. LZSS    modified Lempel-Ziv
  17. LZARI    modified Lempel-Ziv combined with Arithmetic Compression
  18. LZHUF    modified Lempel-Ziv combined with Huffman Compression
  19.  
  20. LZSS is the simplest algorithm.  LZARI probably compresses best, but is the slowest.  LZHUF has nearly as good compression as LZARI but is faster (LHARC uses this algorithm).
  21.  
  22. See CMPRSN.DOC for more detailed history and technical information.
  23.  
  24. LZSS vs. StuffIt
  25. ----------------
  26. StuffIt uses either the LZW or Huffman algorithm (whichever compresses better).  LZSS uses its modified LZ algorithm on all files.
  27.  
  28. Adobe Separator 2.0 application            53010 bytes with StuffIt
  29. (Binhexed) 90808 bytes                           40979 bytes with LZSS
  30. 13% improvement
  31.                                     
  32. StuffIt 1.5.1 application               87056 bytes with StuffIt
  33. (Binhexed) 117410 bytes                    64861 bytes with LZSS
  34. 19% improvement
  35.                             
  36. Text (US Constitution)                     24327 bytes with StuffIt
  37. 62243 bytes                                         24975 bytes with LZSS
  38. 0% improvement
  39.                             
  40. Apple Outline Fonts HyperCard stack        57270 with StuffIt
  41. (Binhexed)    105472 bytes                          38406 with LZSS
  42. 18% improvement
  43. (also, LZSS compressed this SIT file down to 54252 bytes!)
  44.             
  45. Other tests showed:                            
  46. Sound files - no compression from either utility
  47. MacPaint Bitmaps - SI's Huffman beats LZSS, which beats SI's LZW
  48. Text (PostScript) - SI's LZW beats LZSS soundly
  49.  
  50. Mixes of binary and text, such as applications, seem to compress best with LZSS.
  51.  
  52.  
  53. Mac version
  54. -----------
  55. Create a THINK C v3 project with
  56. segment 1: MacTraps, stdio, strings
  57. segment 2: lzss.c unix_main.c
  58.  
  59. This Mac "port" is extremely simplistic. THINK C's UNIX-like interface is used.  Some consequences:
  60.  
  61. - Lack of Mac interface. You have to know the filename and type it in.
  62. - Only data fork is used. Resource forks of files are completely ignored.
  63. - No Finder information saved anywhere. Creation dates, original filenames, etc. are not stored anywhere in the compressed file.
  64.   
  65. To circumvent these last two problems, use Binhex 5.0, StuffIt (with no compression), or a similar program to get all the file's information saved into a data fork.  Then compress that file.
  66.  
  67. Example: to compress "StuffIt 1.5.1"
  68. - Use Binhex 5.0 to put the application in Macbinary format (100% data fork), yielding "Stuff.Bin" (keep spaces out of the filename!)
  69. - run LZSS with "e Stuff.Bin Stuff.Bin.S" (the S extension makes sense for LZSS files)
  70.  
  71. Then to unpack it:
  72. - run LZSS with "d Stuff.Bin.S Stuff.Bin"
  73. - Use Binhex to reconvert to an application
  74.  
  75. Help Wanted
  76. -----------
  77. The original source code for LZSS says "Use, distribute, and modify this program freely."
  78.  
  79. Mac LZSS obviously needs some work to become a REAL Macintosh program, using SF dialogs to process filenames, and handling the Binhex step internally.  Assembly language speedup (or any other optimizations for the Mac) would be nice as well!
  80.  
  81. Also useful would be ports of LZARI and LZHUF. These algorithms may compress better or be faster.
  82.  
  83. Most desirable would be incorporation of these new techniques in a *non-commercial* version of StuffIt, or perhaps development of a free Macintosh archive utility like LHARC for DOS.
  84.  
  85.  
  86.  
  87. 27 May 1989
  88. Rob Elliott
  89. CIS: 70675,1204
  90. rob@embossed.com